// src/productSku.js

import request from '@/utils/request' // 或者你的 axios 实例路径
// import axios if you do not have a wrapper: import axios from 'axios'

// ========== SKU 相关接口 ==========

/**
 * 分页查询 SKU
 * @param {Object} params 请求参数对象，如 { pageNum, pageSize, spuId?, productId?, title?, saleable? }
 * @returns Axios Promise，res.data 格式假定为 { items: SkuVO[], total: number }
 */
export function pageSku(params) {
    return request.get('/admin/sku/page', {
        params
    })
}

/**
 * 获取单个 SKU 详情
 * @param {number} id SKU ID
 * @returns Axios Promise，res.data 为 SkuVO 对象
 */
export function getSku(id) {
    return request.get(`/admin/sku/${id}`)
}

/**
 * 根据商品ID查询SKU列表
 * @param {number} productId 商品ID
 * @returns Axios Promise，res.data 为 SkuVO[] 数组
 */
export function getSkuByProduct(productId) {
    return request.get(`/admin/sku/product/${productId}`)
}

/**
 * 根据SPU ID查询SKU列表
 * @param {number} spuId SPU ID
 * @returns Axios Promise，res.data 为 SkuVO[] 数组
 */
export function getSkuBySpu(spuId) {
    return request.get(`/admin/sku/spu/${spuId}`)
}

/**
 * 新增 SKU
 * @param {Object} dto 必须包含字段：spuId, productId, title, skuCode?, images: JSON 字符串, price, costPrice?, specCombination?, saleable (Boolean), valid (Boolean)
 * @returns Axios Promise
 */
export function addSku(dto) {
    return request.post('/admin/sku', dto)
}

/**
 * 更新 SKU
 * @param {Object} dto 必须包含 id，以及其他字段：spuId, productId, title, skuCode?, images: JSON 字符串, price, costPrice?, specCombination?, saleable (Boolean), valid (Boolean)
 * @returns Axios Promise
 */
export function updateSku(dto) {
    return request.put('/admin/sku', dto)
}

/**
 * 更新 SKU 库存
 * @param {number} id SKU ID
 * @param {number} stock 新的库存数量
 * @returns Axios Promise
 */
export function updateSkuStock(id, stock) {
    return request.put(`/admin/sku/stock/${id}`, null, { params: { stock } })
}

/**
 * 删除 SKU（支持批量）
 * @param {Array<number>} ids 要删除的 SKU ID 列表
 * @returns Axios Promise
 *
 * 注意：后端删除接口通常形如 DELETE /admin/sku?ids=1&ids=2...
 * Axios delete 方法传 params 即可：
 */
export function deleteSku(ids) {
    // 确保 ids 是数组
    return request.delete('/admin/sku', {
        params: { ids }
    })
}

/**
 * 导出 SKU 列表到 Excel
 * @returns Axios Promise，responseType: blob
 */
export function exportSku() {
    return request.get('/admin/sku/export', {
        responseType: 'blob'
    })
}

/**
 * 下载 SKU 导入模板
 * @returns Axios Promise，responseType: blob
 */
export function downloadSkuTemplate() {
    return request.get('/admin/sku/template', {
        responseType: 'blob'
    })
}

/**
 * 导入 SKU Excel
 * @param {File} file 前端选中的文件对象
 * @returns Axios Promise
 */
export function importSku(file) {
    const formData = new FormData()
    formData.append('file', file)
    return request.post('/admin/sku/import', formData, {
        headers: { 'Content-Type': 'multipart/form-data' }
    })
}
